
class Areturn {

};

Areturn funTestNoReturn(){

}// non-void function does not return a value [-Wreturn-type]gcc

// 自引用初始化陷阱
//变量声明时，其作用域从声明点开始
//在初始化表达式中使用同名标识符会引用正在声明的变量
//这导致用未初始化的值初始化变量本身
// 【7】6.4.2 Point of declaration  [basic.scope.pdecl]
#include <iostream>
void funDeclarationPoint(){
    unsigned char x = 'a';
    std::cout<<"x:"<<x<<std::endl;//x:a
    {
        std::cout<<"x:"<<x<<std::endl;//x:a
        unsigned char x = x; 
        std::cout<<"x:"<<x<<std::endl;//x:
    }

    const int i = 2;
    {
        int i[i]{};//中括号中的i是有效的。
        // 个人理解，其中的i是其声明过程中，还没到声明结束，没到声明点位置。（声明和定义的区别）
        for (auto &value : i) {
            value = 3;
        }
    }
}

int main(){
    funDeclarationPoint();
    funTestNoReturn();//成功编译运行
    return 0;
}

